package Cajero.Interfaz;

import Administrador.Interfaz.GestorProductos;
import Administrador.Interfaz.VentanaPrincipal;
import BD.*;
import Cajero.Interfaz.OperacionesBasicas;
import FabricaProductos.ProductosCamping;
import Iterador.Inventario;
import java.awt.Image;
import java.awt.event.*;
import javax.swing.JOptionPane;

/**
 *
 * @author Yalile Bermudes
 */
public class ControladorCajero implements ActionListener {
    
    Factura ventanaFactura;
    Inventario objInventario;
    RegistrarCliente cliente;
    GestorCliente infoCliente;
    GestorFactura infoFactura;
    GestorProductos infoProducto;
    
    public ControladorCajero(Factura ventanaFactura) {
        this.ventanaFactura = ventanaFactura;
        objInventario= new Inventario();
        
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        infoCliente = new GestorCliente();
        infoFactura = new GestorFactura();
        infoProducto = GestorProductos.getInstance();
        OperacionesBasicas opera = new OperacionesBasicas();
        
        if (e.getActionCommand().equals("Salir")) {
            ventanaFactura.dispose();
            new VentanaPrincipal();
        }
        
        if (e.getSource() == ventanaFactura.getBoton()) {
            cliente = RegistrarCliente.getInstance();
            cliente.setVisible(true);
        }
        
        if (e.getSource() == ventanaFactura.getBotonBuscar()) {
            String doc = ventanaFactura.getDocumento();
            boolean bool = infoCliente.buscarCliente(doc);
            if (bool) {
                String nom = infoCliente.getNombre() + " " + infoCliente.getApellido();
                String dir = infoCliente.getDireccion();
                ventanaFactura.setNombreCliente(nom);
                ventanaFactura.setDireccion(dir);
            } else {
                JOptionPane.showMessageDialog(null, "No se encuentra registrado");
            }
            
        }
        
        if (e.getSource() == ventanaFactura.getBotonBuscarProducto()) {
            
            
            
        }
        if (e.getSource() == ventanaFactura.getBotonAgregarTabla()) {            
            String codigo = ventanaFactura.getProducto();
            int cantidad = ventanaFactura.getCantidad();
            String nombre;
            int precio;
            double descuento;
            double IVA;
            if (codigo.equals("") || cantidad == 0) {
                JOptionPane.showMessageDialog(null, "Por favor, debe digitar un codigo de producto y una cantidad");
            } else {
                int lugar= infoProducto.buscarProducto(codigo);
                if(lugar<0||lugar>=infoProducto.productos.size()){
                    System.out.println("No se encontro");
                }else{
                    ProductosCamping producto = infoProducto.productos.get(lugar);//Me falta ensayarlo, ya que no tengo datos para poder realizarlo. -_-
                    nombre = producto.getNombre();
                    precio = Integer.parseInt(producto.getPrecioU());
                    IVA =Double.parseDouble(producto.getPIva());
                    
                    //Calcular el iva aplicado y el precio total
                    double ivaAplicado = opera.precioIvaProducto(precio, IVA);
                    double precioTotal = opera.precioTotalProducto(precio, cantidad);
                    
                    //Enviamos los valores a la tabla
                    Object[] fila = {codigo, nombre, cantidad, precio, precioTotal, ivaAplicado};
                    ventanaFactura.setTablaProducto(fila);
                    
                    //Editamos el nuevo SubTotal, IVA y Total.
                    String ivas = Integer.toString((int)opera.iva(ventanaFactura.getIva(), ivaAplicado));
                    String subTotal =Integer.toString((int)opera.subTotal(ventanaFactura.getSubTotal(), precioTotal));
                    
                    ventanaFactura.setSubTotal(subTotal);
                    ventanaFactura.setIva(ivas);
                    ventanaFactura.setTotal(subTotal);
                    
                }
            }
        }
        
        if (e.getSource() == ventanaFactura.getEliminarProducto()) {            
            ventanaFactura.setProductoSeleccionado();
        }
        
        if (e.getSource() == ventanaFactura.getAceptarCompra())
        {
          
          objInventario.unidadesDisponiblesProducto();
              ventanaFactura.setcantidad();
              ventanaFactura.setCodigo();
              }

        
        
    }
}
